.\" Copyright (c) 2007 Jeff Epler
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
.\" USA.
.\"
.\"
.\"
.TH halcompile "1" "2007-10-17" "LinuxCNC Documentation" "The Enhanced Machine Controller"
.SH NAME
halcompile \- Build, compile and install LinuxCNC HAL components
.SH SYNOPSIS
.PD 0
.RS 5
.PP
\fBhalcompile\fR [\fB\-\-compile\fR|\fB\-\-preprocess\fR|\fB\-\-document\fR|\fB\-\-view\-doc\fR] compfile...
.RE
.PP
\fIsudo\fR \fBhalcompile\fR [\fB\-\-install\fR|\fB\-\-install\-doc\fR] compfile...
.RS 5
.PP
\fBhalcompile\fR \fB\-\-compile\fR \fB\-\-userspace\fR cfile...
.RE
.PP
\fIsudo\fR \fBhalcompile\fR \fB\-\-install\fR \fB\-\-userspace\fR cfile...
.PP
\fIsudo\fR \fBhalcompile\fR \fB\-\-install\fR \fB\-\-userspace\fR pyfile...

.PP

When personalities are used in a comp file, hal instances are exported
sequentially (typically by the mutually exclusive count= or names= parameters).
If the number of exports excedes the maximum number of personalities,
subsequent personalities are assigned modulo the maximum number of
personalities allowed.

By default, the maximum number of personalities is 64.  To alter this
limit, use the \fB--personalities=\fR option with halcompile.  For example,
to set the maximum of  personality items to 4:
   [sudo] \fBhalcompile --personalities=4\fR --install ...

.PD
.SH DESCRIPTION
\fBhalcompile\fR performs many different functions:
.IP \(bu 4
Compile \fB.comp\fR and \fB.c\fR files into \fB.so\fR or \fB.ko\fR HAL realtime components (the \fB\-\-compile\fR flag)
.IP \(bu 4
Compile \fB.comp\fR and \fB.c\fR files into HAL userspace components (the \fB\-\-compile \-\-userspace\fR flag)
.IP \(bu 4
Preprocess \fB.comp\fR files into \fB.c\fR files (the \fB\-\-preprocess\fR flag)
.IP \(bu 4
Extract documentation from \fB.comp\fR files into \fB.9\fR manpage files (the \fB\-\-document\fR flag)
.IP \(bu 4
Display documentation from \fB.comp\fR files onscreen (the \fB\-\-view\-doc\fR flag)
.IP \(bu 4
Compile and install \fB.comp\fR and \fB.c\fR files into the proper directory for HAL realtime components (the \fB\-\-install\fR flag), which may require \fIsudo\fR to write to system directories.
.IP \(bu 4
Install \fB.c\fR and \fB.py\fR files into the proper directory for HAL userspace components (the \fB\-\-install \-\-userspace\fR flag), which may require \fIsudo\fR to write to system directories.
.IP \(bu 4
Extract documentation from \fB.comp\fR files into \fB.9\fR manpage files in the proper system directory (the \fB\-\-install\fR flag), which may require \fIsudo\fR to write to system directories.
.IP \(bu 4
Preprocess \fB.comp\fR files into \fB.c\fR files (the \fB\-\-preprocess\fR flag)
.SH "SEE ALSO"
\fIHalcompile HAL Component Generator\fR in the LinuxCNC documentation for a full description of the \fB.comp\fR syntax, along with examples

\fBpydoc hal\fR and \fICreating Userspace Python Components\fR in the LinuxCNC documentation for documentation on the Python interface to HAL components
